iT邦幫忙

0

Delphi 不重覆的字串列 TStringList 試作

  • 分享至 

  • xImage
  •  

Delphi 不重覆的字串列 TStringList 試作

環境:Delphi RAD 10.4
動機:
不重覆字串對於Python是很簡單的,只須把List 丟給Set( )就能自動排序、去掉重覆者。
今天實作一個Delphi的類似功能,應用的是:
List.Sorted := True;
List.Duplicates := dupIgnore;

畫面:
https://ithelp.ithome.com.tw/upload/images/20210817/20111373Cd77ScZPlw.jpg

程式目地: 讓comboBox1 從TXT檔載入,可在edit1新增,程式結束再存回TXT檔。
其中主要的功能包含:
TStringList.LoadFromFile
TStringList.SaveToFile
TString.Duplicates
說明:
文字檔filterHx.Txt 必需放在 Win32\Debug內 ,因為RAD10 會把EXE檔放在這裡。

全部程式碼:

unit testStringList01;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    ComboBox1: TComboBox;
    function sUnique(List:TStringList; newOne: string):TStringList;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  uString : TStringList;
implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  uString.SaveToFile('filterHx.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;
begin
   uString := TStringList.Create;
   //--- 編碼時,此檔應放在 win32\debug內
   uString.LoadFromFile('filterHx.txt');
   comboBox1.Items.Assign(uString);
end;

//--- TStringList 重整 排序 不重覆
function TForm1.sUnique(List:TStringList; newOne: string):TStringList;
begin
  //--- Ignore if duplicated
  List.Sorted := True;
  List.Duplicates := dupIgnore;

  List.Add(newOne);
  result := List;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  tmp : string;
  i : integer;
begin
  tmp := edit1.Text;
  if length(tmp) <>0 then begin
     sUnique(uString,tmp);
     comboBox1.Items.Assign(uString);
   end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = 13 then Button1Click(nil);
end;

end.

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言